Result: fail
| Detail | Value |
|---|---|
| Returncode | 1 |
| Time | 0:00:00.390001 |
| Stdout |
Output v[0].e[0].a element 0: expected 1, got -858993460
Vertex shader:
#version 150
#define DECLARE_VARYING(DIR, TYPE, NAME) flat DIR TYPE NAME
#define VARYING(NAME) NAME
struct S { int a; float b; };
struct T { float c; int d; };
struct U { S[2] e; T[2] f; };
in vec4 pos;
DECLARE_VARYING(out, U[2], v);
void main()
{
gl_Position = pos;
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
VARYING(v)[i].e[j].a = 100 * i + 10 * j + 1;
VARYING(v)[i].e[j].b = float(100 * i + 10 * j + 2);
VARYING(v)[i].f[j].c = float(100 * i + 10 * j + 3);
VARYING(v)[i].f[j].d = 100 * i + 10 * j + 4;
}
}
}
Fragment shader:
#version 150
#define DECLARE_VARYING(DIR, TYPE, NAME) flat DIR TYPE NAME
#define VARYING(NAME) NAME
struct S { int a; float b; };
struct T { float c; int d; };
struct U { S[2] e; T[2] f; };
DECLARE_VARYING(in, U[2], v);
out vec4 color;
void main()
{
bool pass = true;
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
if (VARYING(v)[i].e[j].a != 100 * i + 10 * j + 1) pass = false;
if (VARYING(v)[i].e[j].b != float(100 * i + 10 * j + 2)) pass = false;
if (VARYING(v)[i].f[j].c != float(100 * i + 10 * j + 3)) pass = false;
if (VARYING(v)[i].f[j].d != 100 * i + 10 * j + 4) pass = false;
}
}
if (pass)
color = vec4(0.0, 1.0, 0.0, 1.0);
else
color = vec4(1.0, 0.0, 0.0, 1.0);
}
|
| Stderr |
SWR detected AVX2 vert shader 0x7f1dd8844000 frag shader 0x7f1dd8842000 vert shader 0x7f1dd8840000 frag shader 0x7f1dd883e000 so shader 0x7f1dd883c000 fetch shader 0x7f1dd883a000 SWR destroy screen! |
| Environment |
PIGLIT_SOURCE_DIR="/home/ilia/src/piglit" PIGLIT_PLATFORM="mixed_glx_egl" |
| Command | /home/ilia/src/piglit/bin/ext_transform_feedback-structs array-struct-array-struct run -auto -fbo |
| dmesg |